// 方法已在全局注册,使用方法时 this.$utils.方法名(参数) 
//导出文件流
export function getExport(content,name){
  var elink = document.createElement("a");
  var blob = new Blob([content]);
  elink.download = name;
  elink.style.display = "none";
  elink.href = URL.createObjectURL(blob);
  elink.click();
}

//时间格式化
export function formattingTime(time) {
  if (typeof time !== 'number' || time < 0) {
    return time
  }

  var hour = parseInt(time / 3600)
  time = time % 3600
  var minute = parseInt(time / 60)
  time = time % 60
  var second = time

  return ([hour, minute, second]).map(function (n) {
    n = n.toString()
    return n[1] ? n : '0' + n
  }).join(':')
}
//根据格式转换时间戳
//   时间戳转化为年 月 日 时 分 秒 
//   number: 传入时间戳 
//   format：返回格式，支持自定义，但参数必须与formateArr里保持一致 如 formatTime(时间戳, "Y.M.D")
export function formatNumber(n, zero) {
  n = n.toString()
  if (zero) return n;
  return n[1] ? n : '0' + n
}

export function formatTime(number, format, zero) {

  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];

  var date = new Date(number * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1, zero));
  returnArr.push(formatNumber(date.getDate(), zero));

  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}
//经纬度格式化
export function formatLocation(longitude, latitude) {
  if (typeof longitude === 'string' && typeof latitude === 'string') {
    longitude = parseFloat(longitude)
    latitude = parseFloat(latitude)
  }

  longitude = longitude.toFixed(2)
  latitude = latitude.toFixed(2)

  return {
    longitude: longitude.toString().split('.'),
    latitude: latitude.toString().split('.')
  }
}
//时间戳转换为微信朋友圈时间格式
export const dateUtils = {
  UNITS: {
    '年': 31557600000,
    '月': 2629800000,
    '天': 86400000,
    '小时': 3600000,
    '分钟': 60000,
    '秒': 1000
  },
  humanize: function (milliseconds) {
    var humanize = '';
    for (var key in this.UNITS) {
      if (milliseconds >= this.UNITS[key]) {
        humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
        break;
      }
    }
    return humanize || '刚刚';
  },
  format: function (dateStr) {
    var date = this.parse(dateStr)
    var diff = Date.now() - date.getTime();
    if (diff < this.UNITS['天']) {
      return this.humanize(diff);
    }
    var _format = function (number) {
      return (number < 10 ? ('0' + number) : number);
    };
    return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDay()) + '-' +
      _format(date.getHours()) + ':' + _format(date.getMinutes());
  },
  parse: function (str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
    var a = str.split(/[^0-9]/);
    return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
  }
};
//获取当前时间 年-月-日
export function nowDate() {
  let nowDate = new Date();
  let date = {
    year: nowDate.getFullYear(),
    month: nowDate.getMonth() + 1,
    date: nowDate.getDate(),
  }
  let month = ''
  let lifeday = ''
  if (date.month < 10) {
    month = '0'
  }
  if (date.date < 10) {
    lifeday = '0'
  }
  console.log(date);
  let systemDate = date.year + '-' + month + date.month + '-' + lifeday + date.date;
  return systemDate
}
//获取上月时间 年-月-日
export function LastDate() {
  let nowDate = new Date();
  let date = {
    year: nowDate.getFullYear(),
    month: nowDate.getMonth(),
    date: nowDate.getDate(),
  }
  let month = ''
  let lifeday = ''
  if (date.month == 0) {
    date.month = 12;
    data.year = data.year - 1
  }
  if (date.month < 10) {
    month = '0'
  }
  if (date.date < 10) {
    lifeday = '0'
  }
  let LastDates = date.year + '-' + month + date.month + '-' + lifeday + date.date;
  return LastDates
}

//获取当前页面以及参数
export function getUrl() {
  const pages = getCurrentPages()
  const currentPage = pages[pages.length - 1]
  const url = currentPage.route

  const options = currentPage.options
  let urlWithArgs = `/${url}?`
  for (let key in options) {
    const value = options[key]
    urlWithArgs += `${key}=${value}&`
  }
  urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
  return urlWithArgs
}
//获取两个经纬度距离(单位米)
export function getDistance(lat1, lng1, lat2, lng2) {
  var radLat1 = lat1 * Math.PI / 180.0;
  var radLat2 = lat2 * Math.PI / 180.0;
  var a = radLat1 - radLat2;
  var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
    Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  s = s * 6378.137; // EARTH_RADIUS;
  s = Math.round(s * 10000) / 10;
  return s;
}

//----------------------------正则匹配--------------------
//判断付款金额
export function regpay(payMoney) {
  var regs = /(^0*(\.0*)$)/;
  var regs1 = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
  var regs2 = /(\-)/;
  if (payMoney == "" || payMoney == "0" || !regs1.test(payMoney) || regs2.test(payMoney) || regs.test(payMoney)) {
    return true;
  } else {
    return false;
  }
}

//匹配帐号
export function regUid(str) {
  return !RegExp(/^\w{6,12}$/).test(str);
}
//匹配密码
export function regPass(str) {
  return !RegExp(/^\w{8,12}$/).test(str);
}

//匹配姓名
export function regName(str) {
  return !RegExp(/^[\u4e00-\u9fa5]{2,5}$/).test(str);
}

//输入是否全为空
export function regAir(str) {
  return str.split(" ").join("").length
}

//匹配身份证
export function regIDC(str) {
  return !RegExp(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/).test(str);
}
//匹配手机号
export function regPhone(str) {
  // return "12313"
  return !RegExp(/^1[3456789]\d{9}$/).test(str);
}

//手机号以 3 - 4 - 4 格式显示
export function regPhoneFormat(str) {
  return str.replace(/(\d{3})(\d{4})/, "$1 $2 "); //添加空格
}

//匹配验证码
export function regCheckNum(str) {
  return !RegExp(/^\d{6}$/).test(str);
}

//匹配邮箱格式
export function regEmail(str) {
  return !RegExp(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/).test(str);
}
//判断对象是否为空
export function object_dede(params) {
  let flag = true;

  for (var key in params) {
    if (params[key] != '0' && !params[key]) {
      return false; // 终止程序
    }
  }

  return flag;
}